package tech.runchen.gz5055.oms.modules.system.service;

import tech.runchen.gz5055.oms.common.enums.OrderStatus;
import tech.runchen.gz5055.oms.common.enums.ReturnOrderStatus;
import tech.runchen.gz5055.oms.common.utils.PageInfo;
import tech.runchen.gz5055.oms.modules.system.entity.NoticeEntity;
import com.baomidou.mybatisplus.extension.service.IService;
import tech.runchen.gz5055.oms.modules.system.entity.OrderEntity;
import tech.runchen.gz5055.oms.modules.system.entity.ReturnOrderEntity;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 消息通知表 服务类
 * </p>
 *
 * @author zzj
 * @since 2023-11-13
 */
public interface INoticeService extends IService<NoticeEntity> {

    /**
     * 列表查询（分页
     *
     * @param params
     * @return
     */
    PageInfo queryPage(Map<String, Object> params);

    /**
     * 列表查询（不分页
     *
     * @param params
     * @return
     */
    List<NoticeEntity> querySelect(Map<String, Object> params);

    /**
     * 保存通知
     *
     * @param notice
     * @return
     */
    boolean saveNotice(NoticeEntity notice);

    /**
     * 更新通知
     *
     * @param notice
     * @return
     */
    boolean updateNotice(NoticeEntity notice);

    /**
     * 根据订单状态创建消息
     *
     * @param order
     * @param orderStatus
     * @return
     */
    void createOrderNotice(OrderEntity order, OrderStatus orderStatus);

    /**
     * 根据退货单状态创建消息
     *
     * @param returnOrder
     * @param returnOrderStatus
     * @return
     */
    void createReturnOrderNotice(ReturnOrderEntity returnOrder, ReturnOrderStatus returnOrderStatus);

    /**
     * 删除通知
     *
     * @param userId
     * @param noticeId
     */
    void deleteNotice(Long userId, Long noticeId);

}
